Computer-based systems often employ formal grammars defined using Bachus-Naur Form (BNF) syntax in order to evaluate user-authored expressions. Unfortunately, a user who is unfamiliar with a specific formal grammar may have difficulty building an expression that is valid in that grammar. While tools have been proposed that enable a user to construct an expression while hiding, to a greater or lesser extent, the underlying formal grammar syntax from the user, such systems impose restrictions that limit what a user can do when building an expression.